home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / CUGUK / C005.ZIP / POW.C < prev    next >
Text File  |  1990-01-19  |  2KB  |  49 lines

  1. /********************************************************************
  2.  * C Users Group (U.K) C Source Code Library File CUGLIB.005        *
  3.  * Inquiries to: M. Houston, 36 Whetstone Clo. Farquhar Rd.         *
  4.  * Edgbaston, Birmingham B15 2QN ENGLAND                *
  5.  ********************************************************************
  6.  * File name: pow.c
  7.  * Program name: library modules only
  8.  * Source of file: The Public Domain Software Library.
  9.  * Purpose: maths function
  10.  * Changes: <who what when & why major changes have been made>      
  11.  ********************************************************************/
  12.  
  13.  
  14. /***********************************************************
  15.  *               The TULSA IBM C BOARD                     *
  16.  *                   918-664-8737                          *
  17.  *             300/1200 XMODEM, 24 Hours                   *
  18.  **********************************************************/
  19.  
  20. #include "math.h"
  21. #include "errno.h"
  22.  
  23. double pow(a,b)
  24. double a,b;
  25. {
  26.         double loga;
  27.         extern int errno;
  28.  
  29.         if (a<=0.0) {
  30.                 if (a<0.0 || a==0.0 && b<=0.0) {
  31.                         errno = EDOM;
  32.                         return -HUGE;
  33.                 }
  34.                 else return 0.0;
  35.         }
  36.         loga = log(a);
  37.         loga *= b;
  38.         if (loga > LOGHUGE) {
  39.                 errno = ERANGE;
  40.                 return HUGE;
  41.         }
  42.         if (loga < LOGTINY) {
  43.                 errno = ERANGE;
  44.                 return 0.0;
  45.         }
  46.         return exp(loga);
  47. }
  48.  
  49.